package com.example.li_han.servlet;

import com.example.li_han.pojo.News;
import com.example.li_han.service.NewsService;
import com.google.gson.Gson;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * 新闻详情查询Servlet
 * 根据新闻ID查询单条新闻的详细信息，并更新浏览量
 * 使用Gson库简化JSON转换
 *
 * @author Administrator
 */
@WebServlet(name = "GetNewsInfo", value = "/GetNewsInfo")
public class GetNewsInfo extends HttpServlet {

    private NewsService newsService = new NewsService();
    private Gson gson = new Gson();

    /**
     * 处理GET请求 - 根据新闻ID获取新闻详情
     * @param request 包含id参数的HTTP请求
     * @param response 返回标准JSON格式响应的HTTP响应
     */
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 设置统一的JSON响应格式
        response.setContentType("application/json;charset=utf-8");

        Map<String, Object> result = new HashMap<>();

        try {
            // 1. 获取用户提交的数据
            String newsId = request.getParameter("newsId");

            if (newsId == null || newsId.trim().isEmpty()) {
                result.put("code", 400);
                result.put("msg", "新闻ID不能为空");
                response.getWriter().write(gson.toJson(result));
                return;
            }

            // 2. 调用业务逻辑，完成查询功能
            News news = newsService.getNewsInfo(Integer.parseInt(newsId));

            if (news != null) {
                // 3. 更新浏览量
//                newsService.updateViewCount(Integer.parseInt(id));

                // 4. 构建成功响应
                result.put("code", 200);
                result.put("msg", "查询成功");
                result.put("data", news);
            } else {
                result.put("code", 404);
                result.put("msg", "新闻不存在");
                result.put("data", null);
            }

        } catch (NumberFormatException e) {
            result.put("code", 400);
            result.put("msg", "新闻ID格式错误");
            result.put("data", null);
        } catch (Exception e) {
            result.put("code", 500);
            result.put("msg", "服务器内部错误: " + e.getMessage());
            result.put("data", null);
        }

        // 5. 使用Gson自动转换为JSON并响应
        response.getWriter().write(gson.toJson(result));
    }

    /**
     * 处理POST请求 - 可与GET请求保持一致或实现其他功能
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 可以复用GET方法的逻辑，或者实现不同的功能
        doGet(request, response);
    }
}